package control;

import java.sql.SQLException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import model.admin.AdminService;
import model.admin.OptionalServiceVO;
import model.member.MemberVO;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

public class OptionalServiceController extends MultiActionController {
	private AdminService adminService;

	public OptionalServiceController() {
	}

	public OptionalServiceController(AdminService adminService) {
		super();
		this.adminService = adminService;
	}

	// 신청 페이지를 보여주는 메서드
	public ModelAndView optionalServiceRequestWriteView(
			HttpServletRequest request, HttpServletResponse response) {
		OptionalServiceVO osvo = null;
		HttpSession session = request.getSession(false);
		String path = "";
		MemberVO tvo = (MemberVO) session.getAttribute("mvo");
		System.out.println(tvo);
		String mess="";
		String obj="";
		
		if (tvo == null) {
			path = "home";
		} else {
			try {
				String gender = tvo.getGender();
				osvo = adminService.requestChecked(tvo);
				System.out.println("OptionalServiceVO..." + osvo);
				if (osvo == null) {
					path = "member_optionalServiceRequestPage.member";
					System.out.println("1");
				}
				 else {
					 
				if (gender.equals("man") && osvo.getRequestM() == null) {
						// request 가 안된 id를 판단하는 if
						System.out.println("2");
						path = "member_optionalServiceRequestAnwser.member";
						System.out.println("여성쪽 응답 대기 중...");
						obj="osvo";
						
					} else if (gender.equals("woman")&& osvo.getRequestW() == null) {
						System.out.println("3");
						path = "member_optionalServiceRequestAnwser.member";
						System.out.println("남성쪽 응답 대기 중....");
						obj="osvo";
					
					} else if ((gender.equals("man") && osvo.getRequestM().equals("1")) && osvo.getRequestW() ==null) {
							path = "member_optionalServiceRequestFinalResult.member";
							//mess="반려자의 승인을 대기하는 중입니다.";
							System.out.println("신청했던 남성이 다시 서비스 페이지 클릭");
							obj="mess1";
							
					} else if ((gender.equals("woman") && osvo.getRequestW().equals("1")) && osvo.getRequestM()==null) {
							path = "member_optionalServiceRequestFinalResult.member";
							//mess="반려자의 승인을 대기하는 중입니다.";
							System.out.println("신청했던 여성이 다시 서비스 페이지 클릭");
							obj="mess1";
					}else if (osvo.getResponseAdmin().equals("0") && (osvo.getRequestM().equals("1") && osvo.getRequestW().equals("1"))) {
						path = "member_optionalServiceRequestFinalResult.member";
						mess="관리자의 승인을 대기하는 중입니다.";
						System.out.println("관리자 승인 대기");
						obj="mess2";
					} else if(osvo.getResponseAdmin().equals("1")){
						path="member_optionalServiceRequestFinalResult.member";
					}
				}

			} catch (SQLException e) {
			}
		}
		System.out.println(osvo);
		return new ModelAndView(path, obj, osvo);
	}

	// 신청된 정보를 optionalService 테이블에 입력하는 메서드
	// 그 후, 정보를 보여주는 View로 이동
	public ModelAndView optionalServiceRequest(HttpServletRequest request,
			HttpServletResponse response, OptionalServiceVO osvo) {
		System.out.println(osvo);
		try {
			adminService.optionalServiceRequest(osvo);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return new ModelAndView("home");
	}

	public ModelAndView requestComplet(HttpServletRequest request,
			HttpServletResponse response) {
		MemberVO mvo = (MemberVO) request.getSession(false).getAttribute("mvo");
		System.out.println(mvo);
		String gender = mvo.getGender();
		System.out.println(gender);
		try {
			if (gender.equals("man")) {
				adminService.requestM(mvo.getId());
			} else if (gender.equals("woman")) {
				adminService.requestW(mvo.getId());
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		// System.out.println(requestM+" "+requestW);
		return new ModelAndView("home");
	}

	// 부가서비스를 신청을 취소하는 메서드
	public ModelAndView requestDelete(HttpServletRequest request,
			HttpServletResponse response) {
		return new ModelAndView("home");
	}

	// 현재 함께 신청하려는 아이디의 간략한 정보를 보여준다.
	
	//통합 후 아이디 체크와 동시에 서비스 신청 유무를 확인하고 확인되면 신청유무에 따라 값을 반환하거나 하지 않는다.
	public ModelAndView idExist(HttpServletRequest request,
			HttpServletResponse response) {
		MemberVO idExistMvo = new MemberVO();
		try {
			String id = request.getParameter("id");
			idExistMvo = adminService.idExist(id);
			} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return new ModelAndView("JsonView", "idExistMvo", idExistMvo);
	}
	
	public ModelAndView duplicationServiceId(HttpServletRequest request, HttpServletResponse response){
		boolean flag= false;
		String id = request.getParameter("id");
		try {
			if(adminService.duplicationServiceId(id)){
				flag=true;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return new ModelAndView("JsonView", "flag", flag);
	}

}
